#include "mainwindow.h"
#include <QVBoxLayout>   // 垂直布局
#include <QHBoxLayout>   // 水平布局
#include <QFileDialog>   // 文件对话框
#include <QMessageBox>   // 消息框

// 主窗口构造函数
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建中央窗口部件
    QWidget *centralWidget = new QWidget(this);
    setCentralWidget(centralWidget);
    
    // 创建主布局（垂直）
    QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);
    
    // 创建输入文件选择部分的布局
    QHBoxLayout *inputLayout = new QHBoxLayout();
    inputPathEdit = new QLineEdit(this);
    inputSelectButton = new QPushButton("选择视频", this);
    inputLayout->addWidget(new QLabel("输入文件："));
    inputLayout->addWidget(inputPathEdit);
    inputLayout->addWidget(inputSelectButton);
    
    // 创建输出文件选择部分的布局
    QHBoxLayout *outputLayout = new QHBoxLayout();
    outputPathEdit = new QLineEdit(this);
    outputSelectButton = new QPushButton("保存位置", this);
    outputLayout->addWidget(new QLabel("输出文件："));
    outputLayout->addWidget(outputPathEdit);
    outputLayout->addWidget(outputSelectButton);
    
    // 创建压缩质量选择部分的布局
    QHBoxLayout *qualityLayout = new QHBoxLayout();
    qualityComboBox = new QComboBox(this);
    qualityComboBox->addItem("高质量", 0);    // 添加质量选项
    qualityComboBox->addItem("中等质量", 1);
    qualityComboBox->addItem("低质量", 2);
    qualityLayout->addWidget(new QLabel("压缩质量："));
    qualityLayout->addWidget(qualityComboBox);
    
    // 创建开始压缩按钮
    startButton = new QPushButton("开始压缩", this);
    
    // 将所有布局添加到主布局中
    mainLayout->addLayout(inputLayout);
    mainLayout->addLayout(outputLayout);
    mainLayout->addLayout(qualityLayout);
    mainLayout->addWidget(startButton);
    
    // 连接信号和槽
    connect(inputSelectButton, &QPushButton::clicked, this, &MainWindow::selectInputFile);
    connect(outputSelectButton, &QPushButton::clicked, this, &MainWindow::selectOutputFile);
    connect(startButton, &QPushButton::clicked, this, &MainWindow::startCompression);
    
    // 创建视频压缩器对象
    compressor = new VideoCompressor(this);
    
    // 设置窗口标题和最小尺寸
    setWindowTitle("视频压缩工具");
    setMinimumSize(500, 200);
}

// 选择输入文件的槽函数实现
void MainWindow::selectInputFile()
{
    // 打开文件选择对话框
    QString fileName = QFileDialog::getOpenFileName(this,
        "选择视频文件", "", "视频文件 (*.mp4 *.avi *.mkv)");
    if (!fileName.isEmpty()) {
        inputPathEdit->setText(fileName);
    }
}

// 选择输出文件的槽函数实现
void MainWindow::selectOutputFile()
{
    // 打开文件保存对话框
    QString fileName = QFileDialog::getSaveFileName(this,
        "保存压缩后的视频", "", "MP4文件 (*.mp4)");
    if (!fileName.isEmpty()) {
        outputPathEdit->setText(fileName);
    }
}

// 开始压缩的槽函数实现
void MainWindow::startCompression()
{
    // 检查输入输出路径是否为空
    if (inputPathEdit->text().isEmpty() || outputPathEdit->text().isEmpty()) {
        QMessageBox::warning(this, "错误", "请选择输入和输出文件");
        return;
    }
    
    // 调用压缩器进行压缩
    compressor->compress(inputPathEdit->text(), 
                        outputPathEdit->text(),
                        qualityComboBox->currentData().toInt());
}

// 析构函数
MainWindow::~MainWindow()
{
} 